package com.hb.guli.common.base.util;

import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;

/**
 * @author jack
 * @date 2023/6/1 14:50
 * @description: Json 工具
 */
public class JsonUtil {
    /*    Gson 可以完成复杂类型的 POJO 和 JSON 字符串的相互转化
         FastJson 将 JSON 转成 POJO 的速度提升到极致，超过其他 JSON 开源库
        在实际开发中，目前主流的策略是：在 POJO 序列化成 JSON　字符串的应用场景，使用　Gson；在JSON 字符串反序列化成 POJO 的应用场景，使用FastJson。
        */

    // GsonBuilder 构造器
    static GsonBuilder gb = new GsonBuilder();
    static {
        // 不需要 html escape
        gb.disableHtmlEscaping();
    }

    // 序列化：使用 Gson 将 POJO 转成字符串
    public static String pojoToJson(Object obj){
//        String json = new Gson().toJson(obj);
        String json = gb.create().toJson(obj);
        return json;
    }

    // 反序列化：使用 Fastjson 将字符串转成 POJO 对象
    public static <T> T jsonToPojo(String json, Class<T> clz) {
        T t = JSONObject.parseObject(json, clz);
        return t;
    }

}
